# coding=utf-8
import os
import threading


class MultiThreadings(object):

    def __init__(self):
        self.thread = threading
        pass

    # 运行cmd命令
    def run(self, cmd):
        threading_id_str = "线程" + str(self.thread.get_ident())
        # 将cmd命令的outputdir的路径加上线程id，用于存放各个线程执行完成后产生的输出报告，后续进行合并
        cmd_split: list = cmd.split(" ")
        output_path_index = cmd_split.index("--outputdir") + 1
        cmd_split[output_path_index] = cmd_split[output_path_index] + f"\\{threading_id_str}"
        cmd = " ".join(cmd_split)
        print(f"批处理命令：{cmd}")
        os.system(cmd)

    # 多线程运行
    def multi(self, cmd_list):
        threads = []
        for cmd in cmd_list:
            t = self.thread.Thread(target=self.run, args=(cmd,))
            # 线程组
            threads.append(t)
        for t in threads:
            t.start()
        for t in threads:
            t.join()

# 调试参数
# cmd_list = ['robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\01发起流程\\01发起接口.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\01发起流程\\21工作流引擎相关责任人解析.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\01发起流程\\22责任人解析.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\02审批提交\\01审批提交.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\02审批提交\\01审批提交_代理处理.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\02审批提交\\02同一责任人跳过.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\02审批提交\\02同一责任人跳过_不会跳.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\02审批提交\\03空责任人跳过.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\02审批提交\\03空责任人跳过_不会跳.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\03打回\\01打回.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\03打回\\02修改业务数据后打回.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\20交办协商催办传阅\\01交办.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\20交办协商催办传阅\\02发起及回复协商.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\20交办协商催办传阅\\03撤回.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\20交办协商催办传阅\\04催办.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\20交办协商催办传阅\\05传阅.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\20交办协商催办传阅\\06剪切代理消息验证.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\30归档终止作废\\01归档.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\30归档终止作废\\02作废.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\30归档终止作废\\03终止.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\40临时步骤\\10发起时添加临时步骤.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\40临时步骤\\20审批中添加临时步骤.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\40临时步骤\\30打回不重走后添加临时步骤.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\40临时步骤\\40打回重走后添加临时步骤.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\40临时步骤\\50有临时步骤的相同责任人跳过.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\71调整流程\\71得到调整流程数据.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\71调整流程\\72提交调整流程数据.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\71调整流程\\73打回重走后调整流程.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\71调整流程\\74打回不重走后调整流程.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\71调整流程\\75发起明确流程有选择流程分支.robot', 'robot --processes 4 --variable remote_url:http://192.168.99.100:4444/wd/hub --outputdir D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\result\\10  D:\\autotest\\重构工作流接口自动化测试_ERP352SP9_py3\\接口场景自动化用例\\71调整流程\\76有临时步骤的调整流程.robot']
# mult = MultiThreadings()
# mult.multi(cmd_list)
